본문으로 건너뛰기

Q. 이벤트 루프의 동작 방식을 마이크로태스크, 매크로태스크를 포함하여 설명하세요.

🧑🏻‍💻 Answer.


✅ 태스크 큐

  • 태스크 큐와 이벤트 루프는 멀티 스레드의 구동 환경이 싱글 스레드인 JS 엔진과 연동하기 위해 사용되는 장치입니다.

  • 이때 태스크 큐는 구체적으로 마이크로 태스크큐(Event Queue) 와 매크로 태스크 큐(Job Queue) 로 나뉘어집니다.

✅ 태스크 큐

  • 마이크로태스크 큐는 매크로 태스크보다 우선순위가 높습니다.

  • 따라서 이벤트 루프는 콜 스택이 비면 마이크로태스크 큐에 대기 중인 함수를 먼저 콜 스택으로 이동 시키고, 마이크로태스크 큐가 비면 태스크 큐에서 대기하고 있는 함수를 콜 스택으로 이동 시키며 동작합니다.

✅ 예시

console.log('script start'); // A

setTimeout(function () { // B
console.log('setTimeout');
}, 0);

Promise.resolve()
.then(function () { // C
console.log('promise1');
})
.then(function () { // D
console.log('promise2');
});

console.log('script end'); // E

/* 출력 결과
script start
script end
promise1
promise2
setTimeout
*/